<?php
/**
 * Green Calc
 * Calc Form View for Green Calc Component
 * 2009-2014 All rights reserved
 * @link http://www.greenkey.ru
 * @license GNU/GPL v3
 */

// Запрет прямого доступа.
defined('_JEXEC') or die;

/**
 * Хелпер Green Calc.
 */
abstract class CalcHelper {

    /**
     * Кэш для доступных действий.
     *
     * @var  JObject
     */
    private static $actions;

    /**
     * Конфигурируем подменю.
     *
     * @param   string  $submenu  Активный пункт меню.
     *
     * @return  void
     */
    public static function addSubmenu($submenu) {
        // Добавляем пункты подменю.
        // JSubMenuHelper - Joomla 2.5
        // JHtmlSidebar - Joomla 3
        JHtmlSidebar::addEntry(
                JText::_('COM_CALC_SUBMENU_CALCS'), 'index.php?option=com_calc', $submenu == 'calcs'
        );
        
        // Зарезервиорвано для переменных и категорий
        JHtmlSidebar::addEntry(
                JText::_('COM_CALC_SUBMENU_VARS'), 'index.php?option=com_calc&var=1', false);
        JHtmlSidebar::addEntry(
                JText::_('COM_CALC_SUBMENU_CATS'), 'index.php?option=com_calc&cat=1', false);

        /*JSubMenuHelper::addEntry(
                JText::_('COM_CALC_SUBMENU_CATEGORIES'), 'index.php?option=com_categories&view=categories&extension=com_calc', $submenu == 'categories'
        );*/

        // Устанавливаем глобальные свойства.
        $document = JFactory::getDocument();
        $document->addStyleDeclaration('.icon-48-calc ' .
                '{background-image: url(../media/com_calc/images/calc-48x48.png);}');

        /*if ($submenu == 'categories') {
            $document->setTitle(JText::_('COM_CALC_ADMINISTRATION_CATEGORIES'));
        }*/
    }

    /**
     * Получаем доступы для действий.
     *
     * @param   int  $calcId   Id сообщения.
     *
     * @return  object
     */
    public static function getActions($calcId = 0) {
        // Определяем имя ассета (ресурса).
        if (empty($calcId)) {
            $assetName = 'com_calc';
            $section = 'component';
        } else {
            $assetName = 'com_calc.calc.' . (int) $calcId;
            $section = 'calc';
        }

        if (empty(self::$actions)) {
            // Получаем список доступных действий для компонента.
            $accessFile = JPATH_ADMINISTRATOR . '/components/com_calc/access.xml';
            $actions = JAccess::getActionsFromFile($accessFile, "/access/section[@name='" . $section . "']/");

            // Добавляем действие core.admin.
            if ($section == 'calc') {
                $adminAction = new stdClass;
                $adminAction->name = 'core.admin';

                array_push($actions, $adminAction);
            }

            self::$actions = new JObject;

            foreach ($actions as $action) {
                // Устанавливаем доступы пользователя для действий.
                self::$actions->set($action->name, JFactory::getUser()->authorise($action->name, $assetName));
            }
        }

        return self::$actions;
    }

}
